package org.grade.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

/**
 * 配置WebSocket消息代理
 */
@Configuration
//开启WebSocket消息代理功能
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
//        启用简单的消息代理，并设置消息的前缀为/topic。客户端可以订阅这个前缀来接收服务器发送的消息。
        config.enableSimpleBroker("/topic");
//        设置应用程序的目的地前缀为/app。客户端发送消息时，需要使用这个前缀来指定目标。
        config.setApplicationDestinationPrefixes("/app");
    }


    /**
     * 注册一个STOMP端点，其URL为/ws。
     * 使用SockJS协议来处理WebSocket连接。
     * 这允许客户端通过这个端点连接到WebSocket服务器，并进行双向通信。
     * @param registry
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws").withSockJS();
    }
}
